<?php

class teacherController extends BaseController
{

    // 控制器初始化
    public function __init()
    {
        if (GS('auth')['identity'] !== '教师') {
            flashMsg('/index/login', '身份认证失败，请先登录','无权操作');
        }

        SS('classes', M('classes')->getClassByTeacher(GS('auth')['id']));
        SS('tasks', M('tasks')->getTeachingTasks());
        SS('setup', M('setups')->get(getRoom()));

        //这些模块 需要有课前设定才能更好运行
        $ex=['student','zip','pf'];
        if (empty(GS('setup')) and in_array(strtolower(PG_M),$ex) ) {
            go('/teacher/setup');
        }
    }



//********************************  课前设置  **************************************
    public function Setup()
    {
        if(empty(gs('tasks'))){
            flashMsg('/teacher/task',"无课程可用,至少创建一个课程(非隐藏)!",'出错了');
        }
        if (IS_POST()) {
            $data['room']        = getRoom();
            $data['class_id']    = I('class_id');
            $data['teacher_id']  = GS('auth')['id'];
            $data['category_id'] = I('category_id');
            $data['task_id']     = I('task_id');
            // 开始插入或更新 配置信息
            if (empty(GS('setup'))) {
                db('setups')->add($data);
            } else {
                db('setups')->where('room = ?', $data['room'])->update($data);
            }
        } else {
            // GET请求 显示 课前设置
            $this->title = '课前设置';
        }
    }

// 写入记事本
    public function notepad()
    {
        if (IS_POST()) {
            $v['notepad'] = I('text');
            db('users')->where('id=?', GS('auth')['id'])->update($v);
            SS2('auth', 'notepad', $v['notepad']);
        }

    }

// 读取设置后写入Session中
    public function getSetup()
    {

        $setup       = M('setups')->get(getroom());
        $r['data'][] = $setup;
        if (empty($setup)) {
            $r['code'] = 1;
            $r['msg']  = '<span class="y-red"> 无设置时功能受限，请设置上课班级和课程</span>';
        } else {
            $r['msg']  = '读取成功';
            $r['code'] = 0;
        }
        SS('setup', $r['data'][0]);
        json($r);
    }

// 允许游戏
    public function allowGame()
    {

        $allow = I('allow') === "true" ? 1 : 0; //禁止、允许
        $r     = db('setups')->where('teacher_id=? and room=?', [GS('auth')['id'], getRoom()])
            ->update(['allow_game' => $allow]);
        SS2('setup', 'allow_game', $allow); //更新session
        die('ok');
    }

// 允许注册
    public function allowRegister()
    {

        $allow = I('allow') === "true" ? 1 : 0;
        $r     = db('setups')->where('teacher_id=? and room=?', [GS('auth')['id'], getRoom()])
            ->update(['allow_register' => $allow]);
        SS2('setup', 'allow_register', $allow); //更新session   
        die('ok');
    }

//********************************  学生名单  **************************************

// 显示学生名单
    public function Student()
    {
        $this->title = '学生名单';
    }

// 取某班所有学生,或某一个学生
    public function getStu()
    {
        $class_id = I('class_id');
        $site     = I('site');
        if ($site) {
            $db          = M('students')->getOne($class_id, longSite($site));
            $r['code']   = 0;
            $r['data'][] = $db;
            $r['count']  = 1;
        } else {
            $r = M('students')->getAll($class_id);
        }
        json($r);
    }

// 编辑单个学生
    public function edtStu()
    {
        $newValue = $_POST['newValue'];
        $field    = $_POST['field'];
        $oldSite  = $_POST['oldSite'];
        //注意这里的oldDate 得不到修改前的值，所以要加上句
        $oldData  = $_POST['oldData'];
        $stu_id   = $oldData['id'];
        $class_id = $oldData['class_id'];
        if ($field === 'site') {
            $newSite = longSite($newValue);
            // //若修改的是座位,判断座位是否已被使用
            // $has = M('students')->isHas($class_id, $newValue);
            // if ($has) die('-1'); //该座位已有其它同学，不允许修改！
            //若修改的是座位且已有人
            $stu2 = db('students')->where('class_id=? and site=?', [$class_id, $newSite])->fetch();
            if ($stu2) {
                //对调座位号
                //防止触发唯一错，先换到临时座位
                db('students')->where('id=?', $stu_id)->update(['site' => 666]);
                db('students')->where('id=?', $stu2['id'])->update(['site' => longSite($oldSite)]);
                db('students')->where('id=?', $stu_id)->update(['site' => $newSite]);
            } else {
//否则直接修改
                db('students')->where('id=?', $stu_id)->update(['site' => $newSite]);
            }
        } else {
            db('students')->where('id=?', $stu_id)->update([$field => $newValue]);
        }
        die('1'); //修改成功
    }

// 删除学生 并删除其记录和作业
    public function delStu()
    {
        $arr = I('data');
        foreach ($arr as $key => $v) {
            db('students')->where('id=?', $v['id'])->delete();
            //删除积分记录
            db('points')->where('stu_id=?', $v['id'])->delete();
            // todo:删除学生的作业
        }
        die('删除成功');
    }

// 添加学生
    public function addStu()
    {
        $_POST['site'] = longSite($_POST['site']);
        $r             = db('students')->add($_POST);
        $r > 0 ? die('1') : die('0'); //1成功 0失败
    }

// 单个学生奖惩操作
    // public function jc1()
    // {
    //     $_POST['type'] = ($_POST['point'] > 0) ? '奖励加分' : '惩罚扣分';
    //     db('points')->add($_POST); //写积分表
    //     //更新学生表
    //     if ($_POST['type']=='奖励加分'){
    //         db('students')->where('id=?', I('stu_id'))->update(
    //             ['good'=>'good'+1]
    //         );
    //     }else{
    //         // db('students')->where('id=?', I('stu_id'))->field('game_point', I('point'));
    //     }
    //     die('成功');

    // }

// 取指定班级,指定座位学生的积分记录
    public function getRecord()
    {
        $stu_id = I('stu_id');
        $type   = I('type');
        $limit  = I('limit');
        $begin  = (I('page') - 1) * $limit;
        $join   = ' as a
                    left join tb_tasks as b on a.task_id=b.id
                    left join tb_categorys as c on b.category_id=c.id';
        $column = 'a.*,b.name as task_name,c.name as category_name';
        $order  = 'a.created desc';
        $w1     = 'stu_id = ? AND type like ?';
        $w2     = [$stu_id, '%' . $type . '%'];
        $r      = db('points')->join($join)->where($w1, $w2)->order($order)
            ->limit($begin, $limit)->fetchAll($column);

        $count = db('points')->where($w1, $w2)->count();
        if ($count > 0) {
            $data['data']  = $r;
            $data['count'] = $count;
            $data['code']  = 0;
        } else {
            $data['msg'] = '无此类记录';
        }
        json($data);

    }

//********************************  课程管理  **************************************

// 显示课程管理 分类管理
    public function Task()
    {

        $this->title = '课程管理';
    }

    /**
     * 取当前登录老师的课程分类
     * @return：json
     */
    public function getCats()
    {
        $r = M('categorys')->getByUserID(GS('auth')['id']);
        if ($r) {
            $data['data'] = $r;
            $data['code'] = 0;
        } else {
            $data['msg'] = '请新建第一个课程分类';
        }
        json($data);
    }

// 取某分类下所有课程
    public function getTasks()
    {
        $category_id = I('category_id');
        if (empty($category_id)) {
            $r['msg']  = '<span class="y-red">请选择一个分类。</span>';
            $r['code'] = 1;
        } else {
            $r['data'] = M('tasks')->getByCatID($category_id);
            $r['code'] = 0;
            if (empty($r['data'])) {
                $r['msg']  = "<span class='y-red'> 此分类无课程，请上传课程</span>";
                $r['code'] = 1;
            }
        }
        json($r);
    }

// 提交新增分类
    public function addCat()
    {

        $r    = db('categorys')->add(['name' => I('name'), 'teacher_id' => GS('auth')['id']]);
        $data = $r > 0 ? '新增成功' : '增加失败，已有同名分类';
        die($data);
    }

// 删除所选分类
    public function delCat()
    {
        $id = I('id');
        db('categorys')->where('id=?', $id)->delete();
        // 同时删除设置表中相关条目
        db('setups')->where('category_id=?', $id)->delete();
        $path = PG_UP.'教师' . GS('auth')['name'] . '/课程/';
        $tasks = db('tasks')->where('category_id=?', $id)->fetchAll();
        // 删除文件和记录
        foreach ($tasks as $task) {
            $file = $path . $task['id'].'.'.$task['ext'];
            @unlink($file);
            db('tasks')->where('id=?',$task['id'])->delete();
        }
        die('删除成功');
    }

// 修改分类名称
    public function edtCat()
    {
        $newName = trim(I('newName')); //新名字
        $id      = I('id');
        // Has的返回值为 True 或 False
        $r = db('categorys')->where('teacher_id=? and name=? and id<>?', [GS('auth')['id'], $newName, $id])
            ->fetch();
        if ($r) {
            die('课程分类重复，修改失败！');
        } else {
            db('categorys')->where('id=?', $id)->update(['name' => $newName]);
            die('分类修改成功');
        }
    }

//显示或隐藏分类
    public function showhide()
    {
        $cat_id    = I('id');
        $newStatus = I('status') == 'true' ? 1 : 0;
        if ($newStatus == 0) {
            $c = db('categorys')->where('teacher_id=? and teaching=?', [GS('auth')['id'], 1])
                ->count();
            if ($c <= 1) {
                die('至少要显示一个分类');
            }
        }
        db('categorys')->where('id=?', $cat_id)->update(['teaching' => $newStatus]);
        die('ok');

    }

// 上传课程
    public function addTasks()
    {
        $cat_id        = I('id');
        $file_name     = $_FILES['file']['name']; //取文件名
        $file_tmp_name = $_FILES['file']["tmp_name"]; //取临时文件名
        $ext_name      = extName($file_name); //取扩展名
        $path          = PG_UP.'教师' . GS('auth')['name'] . '/课程/';
        //目录不存在则自动创建
        if (!is_dir($path)) {mkdir($path, 0777, true);}
        // 先查询课程文件名，再确定新增还是更新课程
        $r = db('tasks')->where('category_id=? and name=?', [$cat_id, mainName($file_name)])->fetch();
        if (!empty($r)) {
            $fullpath=trimAllSpace($path.$r['id'].'.'.$r['ext']);//去除路径中的所有空格
            move_uploaded_file($file_tmp_name, $fullpath); //更新课程,覆盖原文件
        } else {
            $nid      = db('tasks')->add([
                'name'        => mainName($file_name),
                'ext'        => $ext_name,
                'category_id' => $cat_id,
                'teacher_id'  => GS('auth')['id'],
            ]);

            //新ID作为课程名,下面上传后要修改数据表
            $newfullpath=trimAllSpace($path.$nid.'.'.$ext_name);//去除路径中的所有空格
            //记录插入成功后上传文件
            $nid > 0 ? move_uploaded_file($file_tmp_name, $newfullpath) : '';
        }

        $data['code'] = 0;
        json($data);

    }

// 删除课程
    public function delTask()
    {
        $id = I('id');
        //查询此课程的文件名，删除文件
        $r    = db('tasks')->where('id=?', $id)->fetch();
        $file = $r['id'].'.'.$r['ext'];
        $file = PG_UP.'教师' . GS('auth')['name'] . '/课程/' . $file;
        db('tasks')->where('id=?', $id)->delete();
        //同时删除设置表中相关条目
        db('setups')->where('task_id=?', $id)->delete();
        is_file($file) ? @unlink($file) : null; //删除存在的课程文件
        die('成功');
    }

    // 修改课程名称
    public function edtTask()
    {
        $id      = I('id');
        $newName = I('newName'); //新名字
        $oldName = I('oldName'); //旧名字
        $catID   = I('catID');
        $has     = db('tasks')->where('category_id=? AND name=?', [$catID, $newName])->fetch();
        if ($has) {
            die('修改失败，已存在同名课程');
        } else {
            db('tasks')->where('id=?', $id)->update(['name' => $newName]);
            die('修改成功');
        }

    }

//********************************  作业判分  **************************************

// 显示作业判分界面
    public function pf()
    {
        // "批量加分"请求
        if (IS_POST()) {
            $class_id       = I('classes');
            $task_id        = I('tasks');
            $ignoreStudents = '';
            if (I('add3') !== '') {
                $a = M('points')->add(I('add3'), $class_id, 3, '作业优秀', $task_id);
                if ($a !== '') {
                    $ignoreStudents .= '<p style="color:darkgreen">优秀列表跳过了:' . $a . '</p>';
                }
            }
            if (I('add2') !== '') {
                $a = M('points')->add(I('add2'), $class_id, 2, '作业良好', $task_id);
                if ($a !== '') {
                    $ignoreStudents .= '<p style="color:darkblue">良好列表跳过了:' . $a . '</p>';
                }
            }
            if (I('add1') !== '') {
                $a = M('points')->add(I('add1'), $class_id, 1, '作业合格', $task_id);
                if ($a !== '') {
                    $ignoreStudents .= '<p style="color:darkcyan">合格列表跳过了:' . $a . '</p>';
                }
            }
            if (I('add0') !== '') {
                $a = M('points')->add(I('add0'), $class_id, 0, '作业不合格', $task_id);
                if ($a !== '') {
                    $ignoreStudents .= '<p style="color:darkolivegreen">不合格列表跳过了:' . $a . '</p>';
                }
            }
            if ($ignoreStudents !== '') {
                $ignoreStudents = '<p style="color: red">跳过同课程已加分座位如下：</p>' . $ignoreStudents;
            }
            die($ignoreStudents);
        }
        $this->title = '作业判分';

    }



//********************************  批量奖惩  **************************************

// 显示批量奖惩操作
    public function JC()
    {

        if (IS_POST()) {
            $a['point']   = I('point');
            $a['task_id'] = I('task_id');
            $a['reason']  = I('reason');
            $a['type']    = I('type');
            $siteArray    = explode('.', I('sitelist'));

            foreach ($siteArray as $v) {
                $stu = db('students')
                    ->where('class_id=? and site=?', [I('class_id'), longSite($v)])
                    ->fetch();
                $a['stu_id'] = $stu['id'];
                db('points')->add($a);
                if ($a['type']=='奖励加分'){
                    db('students')->query('update tb_students set good=good+1,game_point=game_point+'.$a['point'].' where id=?',[$stu['id']]);
                }else{
                    db('students')->query('update tb_students set bad=bad+1,game_point=game_point+'.$a['point'].' where id=?',[$stu['id']]);
                }
            }
            json();
        }
    }

//********************************  修改登录老师信息  *******************************

// 编辑用户信息界面
    public function Info()
    {

        if (IS_POST()) {
            $token = getToken(); //获取表单令牌
            if ($token == $_POST['token']) {
                $_POST['updated'] = time();
                // M('users')->edit($_POST);
                if ($_POST['password'] !== '') {
                    //如果要修改密码
                    if ($_POST['password'] !== $_POST['password2']) {
                        die('两次密码不一致'); //两次密码不一致
                    }
                    $_POST['password'] = md5($_POST['password']);
                } else {
                    //如果只修改姓名
                    unset($_POST['password']); //删除$data中的密码值
                }
                unset($_POST['password2']); //删除$data中的密码值2
                unset($_POST['token']); //删除$data中的令牌值
                db('users')->where('id=?', $_POST['id'])->update($_POST);
                SS2('auth', 'realname', $_POST['realname']); // 修改Session中的姓名为post请求里的值
                die('修改成功');
            } else {
                die('表单令牌错误,请刷新后重试'); //表单令牌错误
            }
        } else {

            $this->token = setToken(); //设置表单令牌
            $this->title = '修改账号信息';
            $this->info  = db('users')->where('id=?', GS('auth')['id'])->fetch();
        }

    }

//********************************  管理游戏  **************************************

// 管理游戏
    public function Game()
    {

        if (IS_POST()) {
            $r['data'] = db('games')->where('teacher_id=?', GS('auth')['id'])->order('id Desc')->fetchAll();
            $r['code'] =0;
            json($r);
        }else{
            $this->title = '游戏管理';
        }
    }


// 上传游戏
    public function addGames()
    {
        $data['name']       = $_FILES['file']['name'];
        $data['teacher_id'] = GS('auth')['id'];
        $path               = PG_UP.'教师' . GS('auth')['name'] . '/游戏/';
        //目录不存在则自动创建
        if (!is_dir($path)) {mkdir($path, 0777, true);}
        //文件名前加随机数,防止学生猜测游戏文件的地址
        $rand= mt_rand(100, 999);
        $data['file'] = $rand . $data['name'];
        $save_file    = $path . $data['file'];
        //上传文件
        move_uploaded_file($_FILES['file']['tmp_name'], $save_file);
        $data['price'] = 1;
        $data['hits']  = 1;
        db('games')->add($data);
        $r['code'] = 0;
        json($r);
    }

// 删除游戏
    public function delGame()
    {
        $id   = $_POST['data']['id'];
        $file = $_POST['data']['file'];
        $path = PG_UP.'教师' . GS('auth')['name'] . '/游戏/';
        // 删除文件和记录
        if (file_exists($path . $file)) {
            @unlink($path . $file);
        }
        db('games')->where('id=?', $id)->delete();
        die();
    }

// 编辑游戏
    public function edtGame()
    {
        $id = $_POST['id'];
        db('games')->where('id=?', $id)->update($_POST);
        die('ok');
    }



//********************************  积分记录  ***********************************
    // public function record()
    // {


    //     if (IS_POST()) {
    //         $type  = I('type');
    //         $bj    = I('class_id');
    //         $limit = I('limit');
    //         $begin = (I('page') - 1) * $limit;
    //         M('points')->get($bj, $type, null, $begin, $limit);
    //     } else {
    //         $this->title = '积分记录';
    //     }
    // }

//********************************  打包作业  ***********************************
    public function Zip()
    {


        $this->title = '打包下载';
    }






//ajax 压缩并下载
    public function zipAndDown()
    {
        $bj_id    = I('classes');
        $task_id  = I('tasks');
        $taskName = I('tasksName');
        $r        = db('classes')->where('id=?', $bj_id)->fetch('name');
        $bj_name  = $r['name'];
        $path     = PG_UP.'教师' . GS('auth')['name'] . '/作业/' . $bj_name . '班/课程' . $task_id . '/';
        $path     = realpath($path);
        $zip_path = PG_UP.'教师' . GS('auth')['name'] . '/作业/';
        $zip_name = realpath($zip_path) . '/' . $bj_name . '班的作业包.zip';
        // $zip_name = realpath($zip_path) . '/' . $bj_name . '班_'.$taskName.'_作业包.zip';
        if (file_exists($zip_name)) {
            unlink($zip_name);
        }
        $dir      = new phpGrace\tools\dir();
        $res      = $dir->listDir($path); // 获取文件夹中文件列表
        $fileList = $res['fileList']; // 取出文件列表

        $zip = new ZipArchive();
        // $zip->open这个方法第一个参数表示处理的zip文件名。
        // 第二个参数表示处理模式，ZipArchive::OVERWRITE 表示如果zip文件存在，就覆盖掉原来的zip文件。
        // 参数ZipArchive::CREATE，表示系统会往原来的zip文件里添加内容。
        // 如果不是为了多次添加内容到zip文件，建议使用ZipArchive::OVERWRITE。
        // 使用这两个参数，如果zip文件不存在，系统都会自动新建。（需要高版本的libzip 1.7.0扩展）
        // 如果对zip文件对象操作成功，$zip->open这个方法会返回TRUE
        if ($zip->open($zip_name, ZipArchive::CREATE) === true) {
            //如果有需要压缩的文件
            if ($fileList) {
                foreach ($fileList as $file) {
                    $zip->addFile($path . '/' . $file, $file); // 向压缩包中添加文件
                }
                $zip->addFile(PG_UP.'_作业评分器.exe', '_作业评分器.exe'); // 向压缩包中添加作业评分器
                //$zip->addEmptyDir('res');
                //addFolderToZip(PG_UP.'res/',$zip,'res/'); //向压缩包中添加res文件夹
                $zip->close(); // 关闭压缩包
                die($bj_name.'/'.$taskName); // 返回班级就行
            } else {
                die(0);
            }
        }
    }

    // 下载作业包
     public function downZY()
    {
        $bj=$this->gets[0];
        $task=$this->gets[1];
        $file='教师'.gs('auth')['name'].'/作业/'.$bj.'班的作业包.zip';
        hideDownload($file,$bj.'班_'.$task.'_作业包.zip');
    }

    //检查作业
    public function checkZY()
    {
        $bjID    = I('classes');
        $task_id = I('tasks');
        $r       = db('classes')->where('id=?', $bjID)->fetch('name');
        $bj_name = $r['name'];
        $path    = PG_UP.'教师' . GS('auth')['name'] . '/作业/' . $bj_name . '班/课程' . $task_id . '/';
        $students= db('students')->where('class_id=?',$bjID)->order('site')->fetchAll();
        if($students){
            foreach ($students as $key => $stu) {
                $r=db('upRecords')->where('stuID=? AND taskID=?',[$stu['id'],$task_id])->count();
                if ($r){
                    $res['yes'][] = $stu;
                }else{
                    $res['no'][] = $stu; //该座位未上交作业
                }
            }
            json($res);
        }else{
            json('00');
            pd('该班级还没有学生！');
        }

    }

//page: 管理 创建难题调查
//     public function hardCount()
//     {

//         if (IS_POST()) {
//             $data            = I('data');
//             $data['answers'] = strtoupper(I('answers'));
//             $data['name']    = '《' . $data['name'] . '》第' . $data['begin'] . '到第' . $data['end'] . '题';
//             // 计算统计长度与所输入的答案数目是否一致
//             $total       = $data['end'] - $data['begin'] + 1;
//             $countAnswer = mb_strlen($data['answers']);
//             if ($total != $countAnswer) {
//                 die('答案数目不对，请检查输入');
//             }

//             $data['teacher_id'] = gs('auth')['id'];
//             $nid                = db('hardcount')->add($data);
//             $nid > 0 ? die('创建成功') : die("存在同名统计，创建失败");
//         } else {
//             $this->title = '难题调查';
//         }
//     }

// //ajax: 取某教师创建的难题统计
//     public function getHardCounts()
//     {

//         $r['data'] = db('hardCount')->where('teacher_id=?', gs('auth')['id'])->order('created desc')->fetchAll();
//         $r['code'] = 0;
//         json($r);

//     }

// //ajax: 删除统计
//     public function deleteCount()
//     {
//         $r = db('hardCount')->where('id = ?', I('id'))->delete();
//         $r == 1 ? die('删除成功') : die('删除失败，请重试');
//     }

// // ajax: 统计开关
//     public function countSwitch()
//     {
//         $data['switch'] = I('switch');
//         db('hardCount')->where('id=?', I('id'))->update($data);
//         die('ok');
//     }

// //page: 查看统计
//     public function viewCount()
//     {
//         $classId     = gs('setup')['class_id'];
//         $count_id    = I('data')['id'];
//         $begin       = I('data')['begin'];
//         $countAnswer = I('data')['end'] - I('data')['begin'] + 1; //题目数
//         // 取正确答案，并切割为数组
//         $rightAnswer      = I('data')['answers'];
//         $arrayRightAnswer = str_split($rightAnswer);

//         // 取本班已参与学生的答案
//         $本班所有答案 = db('hardCountStu')
//             ->where('count_id=? AND class_id=?', [$count_id, $classId])
//             ->fetchAll();
//         $成绩表 = '';

//         //已参与学生的ID数组
//         $yes          = array_column($本班所有答案, 'stu_id');
//         $countStudent = count($yes);
//         if ($countStudent == 0) {
//             die(0);
//         }

//         //统计未参与调查的学生
//         $allStu = db('students')
//             ->where('class_id=? AND cast(site as int) <='.c('maxPC'), [$classId])
//             ->order('site ASC')
//             ->fetchAll();
//         foreach ($allStu as $stu) {
//             if (!in_array($stu['id'], $yes)) {
//                 $not[] = '<a class="layui-btn layui-btn-xs" style="background:#666;width:88px;">'
//                     . $stu['site'] . '_' . $stu['name'] . '</a>';
//             }

//         }

//         // 将数组元素全部设置为0，以便用来计数错误数
//         $wrong = [];
//         for ($i = 0; $i < $countAnswer; $i++) {
//             $wrong[$i] = 0;
//         }
//         //遍历所有提交统计的学生
//         foreach ($本班所有答案 as $v) {
//             $arrayStuAnswer = str_split($v['answers']);
//             //遍历每个学生的每一题答案
//             foreach ($arrayStuAnswer as $i => $v2) {
//                 if (strtoupper($v2) !== strtoupper($arrayRightAnswer[$i])) {
//                     $wrong[$i]++;
//                 }
//             }

//         }
//         $所有学生成绩 = db('hardCountStu')->join('as a  Join tb_students as b ON a.stu_id=b.id')
//             ->where('a.count_id=? AND a.class_id=?', [$count_id, $classId])
//             ->order('a.得分 DESC')
//             ->fetchAll('a.得分,b.site as 座位,b.name as 姓名');
//         //取学生成绩
//         foreach ($所有学生成绩 as $key => $v) {
//             //根据得分不同,颜色不同
//             if ($v['得分'] >= 80) {
//                 $成绩表 .= '<a class="layui-btn layui-btn-xs" style="background:#076100;">' . $v['座位'] . '_' . $v['姓名'] . '_' . $v['得分'] . '分</a>,';
//             }
//             if ($v['得分'] < 60) {
//                 $成绩表 .= '<a class="layui-btn layui-btn-xs" style="background:#DB1550;">' . $v['座位'] . '_' . $v['姓名'] . '_' . $v['得分'] . '分</a>,';
//             }
//             if ($v['得分'] > 60 and $v['得分'] < 80) {
//                 $成绩表 .= '<a class="layui-btn layui-btn-xs" style="background:#333;">' . $v['座位'] . '_' . $v['姓名'] . '_' . $v['得分'] . '分</a>,';
//             }
//         }

//         $高错题 = [];
//         foreach ($wrong as $key => $w) {
//             $w = $w / $countStudent;
//             $w = sprintf("%01.1f", $w * 100); //保留1位小数
//             // 如果错误率高于30%,加入数组
//             if ($w > 30.0) {
//                 $高错题[$key + $begin] = $w . '%';
//             }
//         }
//         $data['not']       = $not;
//         $data['total']     = $countStudent;
//         $data['高错题'] = $高错题;
//         $data['成绩表'] = '<br>' . $成绩表;

//         json($data);

//     }

// public function viewCount2()
//     {

//         $classID     = gs('setup')['class_id'];
//         $countID    = I('countID');
//         $this->title='查看统计';

//     }

    //打字高手加分
    public function master()
    {
        if (IS_POST()) {
            $data=I('data');
            $x= explode(";",$data); //分割出每个学生加分信息
            // 检查最后一个元素是否为空
            if(end($x) === ""){
                array_pop($x);
            }
            $x2=[];
            foreach ($x as $key => $value) {
                $x2[]=explode(".",$value); //分割出加分值 班级ID 座位号
            }
            foreach ($x2 as $k2 => $v2) {
                //取学生信息
                $stu    = db('students')->where('class_id=? and site=?', [$v2[1],$v2[2]])->fetch('id');
                $stu_id = $stu['id'];
                $point  = $v2[0];
                $bj     = $v2[1];
                $site   = $v2[2];
                //加分
                db('points')->add(['stu_id' => $stu_id, 'task_id' => -1, 'type' => '奖励加分', 'point' => $point, 'reason' => "打字高手加分"]);
                db('students')->where('class_id=? and site=?', [$bj,$site])->field('game_point', $point);
            }
            die('ok');
        }
        $this->title="打字高手加分";
    }
}
